<template>
    <div>
        <vue-particles id="tsparticles" :options="options" /> <!--粒子背景-->
        <div class="formContainer">
            <h3>门户管理系统</h3>
            <el-form ref="loginFormRef" style="max-width: 600px" :model="loginForm" status-icon  :rules="loginRules" label-width="auto" class="loginForm">
                <el-form-item label="用户名" prop="username" class="label">
                    <el-input v-model="loginForm.username" autocomplete="off" />
                </el-form-item>
                <el-form-item label="密码" prop="password" class="label">
                    <el-input v-model="loginForm.password" type="password" autocomplete="off" />
                </el-form-item>
                <el-form-item class="label">
                    <el-button type="primary" @click="submitForm()" class="btn">登录</el-button>
                </el-form-item>
            </el-form>
        </div>
    </div>
</template>

<script setup>
import {reactive,ref} from 'vue'
import {useRouter} from 'vue-router'
import axios from 'axios'
import { ElMessage } from 'element-plus'
import {useStore} from 'vuex'

const store = useStore()
const router = useRouter()
//表单绑定的响应式对象
const loginForm = reactive({
    username:"",
    password:""
})

//表单引用的对象
const loginFormRef = ref()

const loginRules = reactive({
    username:[
        {
            required:true,message:"请输入用户名",trigger:"blur"
        }
    ],
    password:[
        {
            required:true,message:"请输入密码",trigger:"blur"
        }
    ]
})

const submitForm = ()=>{
    //校验表单
    loginFormRef.value.validate((valid)=>{
        // console.log(valid)
        if(valid){
            // console.log(loginForm)
            // localStorage.setItem("token","sea")
            axios.post("/adminapi/user/login",loginForm).then(res=>{
                // console.log(res.data)
                if(res.data.ActionType === "OK"){
                    // localStorage.setItem("token","sea")
                    store.commit("changeUserInfo",res.data.data)
                    store.commit("changeGetterRouter",false)
                    router.push("/index")
                    // console.log(res.data.data)
                }else{
                    ElMessage.error('用户名和密码不匹配')
                }
            })
        }
    })
}

const options = {
    background: {
        color: {
            value: '#2d3a4b'
        }
    },
    fpsLimit: 120,
    interactivity: {
        events: {
            onClick: {
                enable: true,
                mode: 'push'
            },
            onHover: {
                enable: true,
                mode: 'repulse'
            },
        },
        modes: {
            bubble: {
                distance: 400,
                duration: 2,
                opacity: 0.8,
                size: 40
            },
            push: {
                quantity: 4
            },
            repulse: {
                distance: 200,
                duration: 0.4
            }
        }
    },
    particles: {
        color: {
            value: '#ffffff'
        },
        links: {
            color: '#ffffff',
            distance: 150,
            enable: true,
            opacity: 0.5,
            width: 1
        },
        move: {
            direction: 'none',
            enable: true,
            outModes: 'bounce',
            random: false,
            speed: 6,
            straight: false
        },
        number: {
            density: {
                enable: true,
            },
            value: 80
        },
        opacity: {
            value: 0.5
        },
        shape: {
            type: 'circle'
        },
        size: {
            value: { min: 1, max: 5 }
        }
    },
    detectRetina: true
}
</script>

<style lang="scss" scoped>
.formContainer{
    width: 500px;
    height: 260px;
    position: fixed;
    left: 50%;
    top: 50%;
    transform: translate(-50%,-50%);
    background:rgba($color: #000000, $alpha: 0.5) ;
    color: white;
    text-align: center;
    padding: 30px;

    h3{
        font-size: 30px;
    }

    .loginForm{
        margin-top: 40px;
    }

    .btn{
        margin: 0 auto;
    }

    .label{
        margin: 30px;
    }
}

//深度匹配class
::v-deep .el-form-item__label{
    color: white;
}
</style>